testsuite: Add a test for icon names
authorBenjamin Otte <otte@redhat.com>
Fri, 23 May 2014 14:35:08 +0000 (16:35 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 23 May 2014 15:12:32 +0000 (17:12 +0200)
This test just checks that all the icon names that GTK uses are present
in the default icon theme.

As icon names are not checked programmatically and we do not want to run
into missing-icon icons in the code, this test seems necessary.

For now, it's just a stub that tests stock icons.

testsuite/gtk/Makefile.am
testsuite/gtk/check-icon-names.c [new file with mode: 0644]

index 10301c68e6f0661db5630fc5719d84104321fd50..d9f83323648e16dfe12cd8c78fb9eafd462571b5 100644 (file)
@@ -32,6 +32,7 @@ TEST_PROGS +=                         \
        bitmask                 \
        builder                 \
        cellarea                \
+       check-icon-names        \
        clipboard               \
        defaultvalue            \
        entry                   \
diff --git a/testsuite/gtk/check-icon-names.c b/testsuite/gtk/check-icon-names.c
new file mode 100644 (file)
index 0000000..fe3646c
--- /dev/null
@@ -0,0 +1,147 @@
+#include <gtk/gtk.h>
+
+static char *icon_names[] = {
+  /* stock icons */
+  "dialog-password",
+  "dialog-error",
+  "dialog-information",
+  "dialog-question",
+  "dialog-warning",
+  /* "gtk-dnd", */
+  /* "gtk-dnd-multiple", */
+  /* "gtk-apply", */
+  /* "gtk-cancel", */
+  /* "gtk-no", */
+  /* "gtk-ok", */
+  /* "gtk-yes", */
+  "window-close",
+  "list-add",
+  "format-justify-center",
+  "format-justify-fill",
+  "format-justify-left",
+  "format-justify-right",
+  "go-bottom",
+  "media-optical",
+  /* "gtk-convert", */
+  "edit-copy",
+  "edit-cut",
+  "go-down",
+  "system-run",
+  "application-exit",
+  "go-first",
+  /* "gtk-select-font", */
+  "view-fullscreen",
+  "view-restore",
+  "drive-harddisk",
+  "help-contents",
+  "go-home",
+  "dialog-information",
+  "go-jump",
+  "go-last",
+  "go-previous",
+  "image-missing",
+  "network-idle",
+  "document-new",
+  "document-open",
+  /* "gtk-orientation-portrait", */
+  /* "gtk-orientation-landscape", */
+  /* "gtk-orientation-reverse-portrait", */
+  /* "gtk-orientation-reverse-landscape", */
+  /* "gtk-page-setup", */
+  "edit-paste",
+  /* "gtk-preferences", */
+  "document-print",
+  "printer-error",
+  /* "printer-paused", */
+  "document-print-preview",
+  /* "printer-info", */
+  /* "printer-warning", */
+  "document-properties",
+  "edit-redo",
+  "list-remove",
+  "view-refresh",
+  "document-revert",
+  "go-next",
+  "document-save",
+  "media-floppy",
+  "document-save-as",
+  "edit-find",
+  "edit-find-replace",
+  "view-sort-descending",
+  "view-sort-ascending",
+  "tools-check-spelling",
+  "process-stop",
+  "format-text-bold",
+  "format-text-italic",
+  "format-text-strikethrough",
+  "format-text-underline",
+  "format-indent-more",
+  "format-indent-less",
+  "go-top",
+  "edit-delete",
+  /* "gtk-undelete", */
+  "edit-undo",
+  "go-up",
+  "text-x-generic",
+  "folder",
+  "help-about",
+  /* "gtk-connect", */
+  /* "gtk-disconnect", */
+  /* "gtk-edit", */
+  /* "gtk-caps-lock-warning", */
+  "media-seek-forward",
+  "media-skip-forward",
+  "media-playback-pause",
+  "media-playback-start",
+  "media-skip-backward",
+  "media-record",
+  "media-seek-backward",
+  "media-playback-stop",
+  /* "gtk-index", */
+  "zoom-original",
+  "zoom-in",
+  "zoom-out",
+  "zoom-fit-best",
+  "edit-select-all",
+  "edit-clear"
+  /* "gtk-select-color", */
+  /* "gtk-color-picker" */
+};
+
+static void
+test_icon_existence (gconstpointer icon_name)
+{
+  GtkIconInfo *info;
+
+  /* Not using generic fallback and builtins here, as we explicitly want to check the
+   * icon theme.
+   * The icon size is randomly chosen.
+   */
+  info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (), icon_name, 16, 0);
+  if (info == NULL)
+    {
+      g_test_message ("Failed to look up icon for \"%s\"", (char *) icon_name);
+      g_test_fail ();
+      return;
+    }
+
+  g_object_unref (info);
+}
+
+int
+main (int argc, char *argv[])
+{
+  guint i;
+  char *test_name;
+
+  gtk_test_init (&argc, &argv);
+
+  for (i = 0; i < G_N_ELEMENTS (icon_names); i++)
+    {
+      test_name = g_strdup_printf ("/check-icon-names/%s", icon_names[i]);
+      g_test_add_data_func (test_name, icon_names[i], test_icon_existence);
+      g_free (test_name);
+    }
+
+  return g_test_run();
+}